package CommonTools;

import com.sun.awt.AWTUtilities;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import look.elements.MessageWindow;

/**
 * Вспомогательные функции для работы с окнами и оформлением
 *
 * @author Salnikov Aleksey
 */

public class DesignTools {

    /**
     * Метод добавляет к панели заголовок
     * @param panel панель
     * @param title заголовок
     */
    public static void addPanelTitle(JPanel panel, String title)
    {
        panel.setBorder(BorderFactory.createTitledBorder(title));
    }

    /**
     * Метод отображает на экране пользователя сообщение
     *
     * @param title строка с заголовком сообщения
     * @param body строка с основным текстом сообщения
     * @param information логическая переменная. Если true, то будет выведено информационное сообщение, иначе - сообщение об ошибке.
     */
    public static void showMessage(String title, String body, boolean information)
    {
       int i;
       if (information)
           i = JOptionPane.INFORMATION_MESSAGE;
       else
           i = JOptionPane.ERROR_MESSAGE;
       JOptionPane.showMessageDialog(null, body, title, i);
    }

    public static void centeredWindow(JFrame frame)
    {
        Toolkit tool = Toolkit.getDefaultToolkit();
        Dimension d = tool.getScreenSize();

        frame.setLocation((int)((d.getWidth() - frame.getWidth())/2), (int) ((d.getHeight() - frame.getHeight())/2));
    }

    public static void centeredWindow(JDialog frame)
    {
        Toolkit tool = Toolkit.getDefaultToolkit();
        Dimension d = tool.getScreenSize();

        frame.setLocation((int)((d.getWidth() - frame.getWidth())/2), (int) ((d.getHeight() - frame.getHeight())/2));
    }

    public static void showMessageWindowNewDemand()
    {
        final MessageWindow mw = new MessageWindow();

        //Поток для отображения уведомления о заявке
        Thread d = new Thread()
        {
            public void run()
            {
                //Делаем окно видимым
                float opacity = 0;
                AWTUtilities.setWindowOpacity(mw, opacity);
                mw.setVisible(true);

                while (opacity  < 0.9)
                {
                    opacity += 0.1;
                    AWTUtilities.setWindowOpacity(mw, opacity);
                    try {
                        this.sleep(20);
                    } catch (InterruptedException ex) {
                    }
                }

                //Если пользователь выбрал автоматическое скрытие окна
                if (Settings.getParametrValue("hidenotice").equals("1"))
                {
                    System.out.println("Зашел");
                    try {
                        //Показываем окно 8 секунд
                        sleep(8000);
                    } catch (InterruptedException ex) {}

                    //Теперь плавно скрываем окно
                    opacity = 1;
                    AWTUtilities.setWindowOpacity(mw, opacity);

                    while (opacity > 0.1)
                    {
                        opacity -= 0.1;
                        AWTUtilities.setWindowOpacity(mw, opacity);
                        try {
                            sleep(60);
                        } catch (InterruptedException ex) {}
                    }

                    mw.dispose();
                }

            }
        };

        d.start();

        //Поток для звуквого уведомления
        if (Settings.getParametrValue("soundnotice").equals("1"))
        {
            Player player = new Player("sounds/incoming.wav");
            player.start();
        }
    }

}
